#pragma once

#include <QGraphicsPixmapItem>
#include <QString>

class Cell
{
public:
    Cell(const QString& image) : m_image(image) {}
    virtual bool isMovable() const = 0;
    virtual char Type() const = 0;
    QPixmap GetImage() const
    {
        return m_image;
    }
private:
    QPixmap m_image;
};


class Bush : public Cell
{
public:
    Bush() : Cell(":/res/bush.png"){}
    bool isMovable() const { return true; }
    char Type() const { return 'B'; }
};


class Terrain : public Cell
{
public:
    Terrain() : Cell(":/res/terrain.png"){}
    inline bool isMovable() const { return true; }
    char Type() const { return 'E'; }
};


class Wall : public Cell
{
public:
    Wall() : Cell(":/res/wall.png"){}
    inline bool isMovable() const { return false; }
    char Type() const { return 'W'; }

};
